package com.one.blocks.rbac.enums;

import com.one.blocks.common.enums.CodeEnum;
import com.one.blocks.common.valid.validator.EnumContainsValid;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * @author <a href="mailto:idler41@163.con">linfuxin</a> created on 2023-10-25 08:50:38
 */
@AllArgsConstructor
public enum DataScopeEnum implements CodeEnum, EnumContainsValid<Integer> {

    /**
     * 本部门
     */
    CURRENT_NODE(0),
    /**
     * 本部门及以下
     */
    NODE_AND_CHILD(1),
    /**
     * 自定义
     */
    CUSTOM(2),

    /**
     * 所有数据权限
     */
    ALL(3),

    /**
     * 本人数据
     */
    SELF(4),
    ;

    @Getter
    final int code;


    @Override
    public boolean contains(Integer val) {
        return Arrays.stream(values()).anyMatch(i -> i.getCode() == val);
    }

}
